//package cn.seaboot.admin.excel.manager;
//
//import cn.seaboot.admin.excel.service.ExcelLogService;
//import cn.seaboot.excel.call.ObjectReaderAndWriter;
//import cn.seaboot.excel.header.Header;
//import org.apache.poi.ss.usermodel.Row;
//import org.jetbrains.annotations.NotNull;
//
///**
// * 一个代理类，增加了日志记录切面
// *
// * @author Mr.css
// * @version 2023-05-06 16:45
// */
//public class ExcelLogCallback<T> extends ObjectReaderAndWriter<T> {
//
//    /**
//     * Excel文件ID，用于追溯文件信息
//     */
//    private final Long id;
//
//    /**
//     * 日志服务
//     */
//    private final ExcelLogService excelLogService;
//
//    /**
//     * @param excelLogService 日志服务
//     * @param id              任务导入批次ID
//     * @param target          数据转换为对象实体
//     * @param fieldNames      字段顺序列表
//     */
//    public ExcelLogCallback(ExcelLogService excelLogService, Long id, @NotNull Class<T> target, @NotNull String[] fieldNames) {
//        super(target, fieldNames);
//        this.excelLogService = excelLogService;
//        this.id = id;
//    }
//
//    /**
//     * @param excelLogService 日志服务
//     * @param id              任务导入批次ID
//     * @param target          数据转换为对象实体
//     * @param headers         表头配置
//     */
//    public ExcelLogCallback(ExcelLogService excelLogService, Long id, @NotNull Class<T> target, @NotNull Header[] headers) {
//        super(target, headers);
//        this.excelLogService = excelLogService;
//        this.id = id;
//    }
//
//    /**
//     * 导入Excel时候，记录详细的日志信息
//     *
//     * @param row 行对象
//     * @return 数据
//     */
//    @Override
//    public T readRow(@NotNull Row row) {
//        try {
//            T ret = super.readRow(row);
//            if (ret == null) {
//                excelLogService.saveLog(id, row.getRowNum(), ImportStatus.NON, "non!");
//            } else {
//                excelLogService.saveLog(id, row.getRowNum(), ImportStatus.SUCCEED, "succeed!");
//            }
//            return ret;
//        } catch (Exception e) {
//            // 如果需要预检查，就不抛出异常
//            excelLogService.saveLog(id, row.getRowNum(), ImportStatus.FAILED, e.getMessage());
//            return null;
//        }
//    }
//
//    /**
//     * 导入Excel时候，记录详细的日志信息
//     *
//     * @param row 行对象
//     */
//    @Override
//    public void writeRow(Row row, T obj) {
//        super.writeRow(row, obj);
//    }
//}
